<?php
/**
 * @author		João Batista Neto
 * @brief		Objetos que representam cada tipo do retorno da API
 * @package		dso.buscape.result.type
 */

require_once 'dso/buscape/result/type/BuscapeLeaf.php';

/**
 * @brief		Vendedor
 * @class		BuscapeSeller
 * @ingroup		Types
 */
class BuscapeSeller extends BuscapeLeaf {
	/**
	 * @brief	Indica se o vendedor possui um sistema de pagamento digital
	 * @var		boolean
	 */
	private $digitalPayment;

	/**
	 * @brief	Indica se o vendedor é confiável
	 * @var		boolean
	 */
	private $isTrustedStore;

	/**
	 * @brief	ID do vendedor
	 * @var		integer
	 */
	private $id;

	/**
	 * @brief	Nome do vendedor
	 * @var		string
	 */
	private $sellerName;

	/**
	 * @var		float
	 */
	private $cpc;

	/**
	 * @brief	Logo do vendedor
	 * @var		BuscapeThumbnail
	 */
	private $thumbnail;

	/**
	 * @brief	Lista de linkst do vendedor
	 * @var		RecursiveComponentIterator
	 */
	private $links;

	/**
	 * @brief	Informação extra sobre o vendedor
	 * @var		string
	 */
	private $extra;

	/**
	 * @brief	Formas de contato com o vendedor
	 * @var		RecursiveComponentIterator
	 */
	private $contacts;

	/**
	 * @brief	Avaliação do vendedor
	 * @var		BuscapeRating
	 */
	private $rating;

	/**
	 * @brief	Lista de endereços do vendedor
	 * @var		RecursiveComponentIterator
	 */
	private $addresses;

	/**
	 * @brief	Cria uma instância do objeto com os argumentos passados
	 * @param	$args array Lista de argumentos que serão utilizados para criação do objeto
	 * @return	BuscapeSeller
	 */
	public static function createInstance( array $args ){
		$seller = new BuscapeSeller();

		foreach ( $args as $property => $value ){
			$seller->$property = $value;
		}

		return $seller;
	}

	/**
	 * @brief	Recupera o ID do vendedor
	 * @return	return integer
	 */
	public function getId() {
		return $this->id;
	}

	/**
	 * @brief	Recupera o nome do vendedor
	 * @return	string
	 */
	public function getName() {
		return $this->sellerName;
	}

	/**
	 * @return	float
	 */
	public function getCpc() {
		return $this->cpc;
	}

	/**
	 * @brief	Recupera o logo do vendedor
	 * @return	BuscapeThumbnail
	 */
	public function getThumbnail() {
		return $this->thumbnail;
	}

	/**
	 * @brief	Recupera a lista de links do vendedor
	 * @return	RecursiveComponentIterator
	 */
	public function getLinks() {
		return $this->links;
	}

	/**
	 * @brief	Recupera alguma informação extra sobre o vendedor
	 * @return	string
	 */
	public function getExtra() {
		return $this->extra;
	}

	/**
	 * @brief	Recupera uma lista de contatos do vendedor
	 * @return	RecursiveComponentIterator
	 */
	public function getContacts() {
		return $this->contacts;
	}

	/**
	 * @brief	Recupera a avaliação do vendedor
	 * @return	BuscapeRating
	 */
	public function getRating() {
		return $this->rating;
	}

	/**
	 * @brief	Recupera uma lista de endereços do vendedor
	 * @return	RecursiveComponentIterator
	 */
	public function getAddresses() {
		return $this->addresses;
	}

	/**
	 * @brief	Verifica se o vendedor possui formas de pagamento digital
	 * @return	boolean
	 */
	public function hasDigitalPayment() {
		return $this->digitalPayment;
	}

	/**
	 * @brief	Verifica se o vendedor é confiável
	 * @return	boolean
	 */
	public function isTrustedStore() {
		return $this->isTrustedStore;
	}
}